﻿Ext.extend(demo.module,{
	/*
	 * this.ds = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ method:
	 * 'GET', url: 'data/grid.txt' }), reader: new Ext.data.JsonReader({ root:
	 * 'rows', totalProperty: 'total', fields: ['Name','Sex','Phone','Email'] })
	 * }); this.body = new Ext.grid.GridPanel({ store: this.ds, stripeRows:
	 * true, loadMask: true, border: false, autoExpandColumn: 'Email', columns: [
	 * new Ext.grid.RowNumberer(), {header: '姓名', width: 80, sortable: true,
	 * dataIndex: 'Name'}, {header: '性别', width: 50, sortable: true, dataIndex:
	 * 'Sex', renderer: function(value){ return value? '男':'女'; } }, {header:
	 * '电话', width: 100, sortable: true, dataIndex: 'Phone'}, {id:'Email',
	 * header: 'Email', width: 100, sortable: true, dataIndex: 'Email'} ], bbar:
	 * new Ext.PagingToolbar({ pageSize: 15, store: this.ds, displayInfo: true })
	 * });
	 */
	/*---------------------------------------------------------------------------------------------------------*/

	init: function(){	
	var proxy = new Ext.data.HttpProxy({
				url : "employee.do?method=query"
			});
	var  news= Ext.data.Record.create([{      // Employee
				name : "rec_nId",		// 新闻ID
				type : "int",
				mapping : "nId"
			}, {
				name:"rec_cId",				// 新闻对应栏目标识号
				type:"int",
				mapping:"cId"
			},{
				name : "rec_nTitle",	// 新闻标题
				type : "string",
				mapping : "nTitle"
			}, {
				name : "rec_nWriter",		// 新闻作者
				type : "string",
				mapping : "nWriter"
			},{
				name:"rec_nSummary",		// 新闻摘要
				type:"string",
				mapping:"nSummary"
			},{
				name:"rec_nContent",			// 新闻内容
				type:"string",
				mapping:"nContent"
			}, {
				name : "rec_nVisiable",		// 是否首页显示
				type : "int",
				mapping : "nVisiable"
			}, {
				name : "rec_nToplevel",		// 置顶等级
				type : "int",
				mapping : "nToplevel"
			},{
				name:"rec_nHref",			// 新闻链接
				type:"string",
				mapping:"nHref"
			}]);
			
			
	var reader = new Ext.data.JsonReader({
				totalProperty : "totalProperty",            // 总记录数
				root : "root"                               // 服务器发过来的/json中的/名为root的数据（集合）
			}, news);            // Employee几时Record（数据行的逻辑定义）
			
	var store = new Ext.data.Store({
				proxy : proxy,
				reader : reader             // 没有autoloader！
			});
            
	store.load({params : {                      // 给服务器发送分页数据（）
					start : 0,
					limit : 5                      // 每一页最大记录数
				}
			});
            
	var sm = new Ext.grid.CheckboxSelectionModel();        // 框框选择模型
    
	var cm = new Ext.grid.ColumnModel(                     // 定义列模型
            [new Ext.grid.RowNumberer(),                    // 数据序列
                sm, 
             {
             	id:"ntitle",
				header : "标题",                              // 显示值
				width : 120,
				dataIndex : "rec_nTitle",                        // 映射到Record中定义的数据行其中一列的逻辑名
				editor: new Ext.grid.GridEditor(new Ext.form.TextField())
			}, {
				id : "nwriter",
				header : "作者",
				dataIndex : "rec_nWriter",
				editor:new Ext.grid.GridEditor(new Ext.form.TextField())
			}, {
				id:"nvisiable",
				header : "首页显示",
				width:40,
				dataIndex:"rec_nVisiable",
				editor:new Ext.grid.GridEditor(new Ext.form.Checkbox())
			},{
				id:"ntoplevel",
				header:"置顶",
				width:60,
				dataIndex:"rec_nToplevel"
				//renderer: function(v){return  "<span  style='margin-right:10px'><a  href='#'> 置顶</a></span>";}
				
			},{
				id:"nhref",
				header : "链接",
				 width : 110,
				dataIndex : "rec_nHref",
				editor:new Ext.grid.GridEditor(new Ext.form.TextField())
			}]);
			
	var pageToolbar = new Ext.PagingToolbar({                  
		store : store,                                            // 作为pagingToolbar的数据存储器
		pageSize : 5,
		displayInfo : true,
		displayMsg : "当前显示从{0}条到{1}条,共{2}条",
		emptyMsg : "<span style='color:red;font-style:italic;'>对不起,没有找到数据</span>"
	});
    
    // 以上的定义都是相当于GridPanel的配置零件
    // 以下进行组装
    
	var grid = new Ext.grid.EditorGridPanel({
		store : store,                            // 作为GridPanel容器的数据存储器
		autoExpandColumn : "nhref",
		cm : cm,                                  // 列模型（里有-》框框选择模型）
		sm : sm,                                   // 框框选择模型
		bbar : pageToolbar,                          // 分页组件
		autoHeight : true,
		bodyStyle : "width: 100%",
		autoWidth : true,
		tbar : [                                  //工具bar-》Toorbar
				{
					text : "添加新闻",
					//icon : "images/add.png",
					cls : "x-btn-text-icon",   //不明白，怎么找到的？
                   
					handler : function() {
						////var path = "/员工管理系统/新增员工";
                        //！！！---left在window顶层容器的作用域中定义----！！！！
                        //text参数是搜索路径的使用的属性
						////left.selectPath(path, "text", function(x, node) {
						////			left.fireEvent("dblclick", node);// 触发双击事件
						////		});
	/* * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * v* * * * * * * * * * * * * * * */	
						var hiddenEid = new Ext.form.Hidden({
										name : "nId"
									});
						var txtName = new Ext.form.TextField({
										fieldLabel : "新闻标题",
										name : "nTitle",
										allowBlank : false
									});
						var nSummary = new Ext.form.TextArea({
										fieldLabel : "新闻摘要",
										name : "nSummary",
										allowBlank : false,
										width : 330
									});
										var proxy = new Ext.data.HttpProxy({
										url : "dept.do?method=queryDepts"	//获取新闻对应栏目的action
									});
							var reader = new Ext.data.JsonReader({}, [{
												name : "rec_cId",
												type : "int",
												mapping : "cId"
											},
											{
												name : "rec_cTitle",
												type : "string",
												mapping : "cTitle"
											}]);
							var store2 = new Ext.data.Store({
								proxy : proxy,
								reader : reader,
								autoLoad : true,                //自动加载数据
								listeners : {
									load : function() {
										categorylist.setValue("category1");//cmbDept.setValue(record.get("rec_cId"));//为复选框选定原来的值
									}
								}
							});
							var categorylist = new Ext.form.ComboBox({
										store : store2,
										fieldLabel : "所在栏目",
										displayField : "rec_cTitle",		//显示值是栏目Title
										valueField : "rec_cId",				//实际值为栏目标识符
										mode : "remote",
										triggerAction : "all",
										allowBlank : false,
										emptyText : "请选着新闻所在栏目",
										allowBlank : false,
										editable : false,
										name : "cId",
										hiddenName : "cId" // 请注意，设置该选项才能将实际值传送到服务器  employeeVo.did
									});
									
var form = new Ext.form.FormPanel({
			title:"新闻修改表单",
			//plain:true,
			//cls:"x-plain",
			frame : true,
			layout:'form',
			items : [	hiddenEid,
						txtName, 
						categorylist,
						nSummary, {
                                      	name: 'body',
                                        fieldLabel: '正文',
                                        height: 430,
                                        xtype:'fckeditor',
                                        anchor:'100%',
                                        id:'body'
                                    }],
			url : "#",
			baseParams : {
				method : "edit"
			},
			method : "post",
			buttons : [{
						text : "修改",
						handler : function() {
							var json = {
								success : function(f, action) {
									Ext.Msg.alert("成功", action.result.msg);
									store.reload();
									win.close();
								},

								failure : function() {
									Ext.Msg.alert("失败", "对不起，操作失败，请检查数据是否完整！");
								}
							};
							form.getForm().submit(json);
						}
					}, {
						text : "关闭",
						handler : function() {
							win.close();
						}
					}]
		});
var win = new Ext.Window({
			title : "修改新闻",
			layout:'fit',
			plain:true,
			id : "edit",
			width : 500,
			modal : true,
			height:500,
			//autoHeight : true,
			items : [form]
		});
win.show(Ext.getBody());
	/* * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * v* * * * * * * * * * * * * * * */					////////////////////////////////////////////////////////////////////////////////////////
					}
				},
				{
					text : "修改新闻",
					//icon : "images/application_edit.png",
					cls : "x-btn-text-icon",
					handler : function() {
						// 判断是否有选择行
						var selModel = grid.getSelectionModel();
						var record;// 选择的行的数据
						if (!selModel.hasSelection()) {
							Ext.Msg.alert("错误", "请选择要修改的行!");
						} else if (selModel.getSelections().length > 1) {
							Ext.Msg.alert("错误", "一次只能修改一行,不行同时选择多行!");
						} else {
							record = selModel.getSelected();
							// ////////////////////////////////////////////
							// 定义隐藏表单域保存修改新闻的ID
							var hiddennId = new Ext.form.Hidden({
										name : "nId"
									});
                                    
                                    
							var nTitle = new Ext.form.TextField({
										fieldLabel : "新闻标题",
										name : "nTitle",
										allowBlank : false
									});
							var nSummary = new Ext.form.TextArea({
										fieldLabel : "新闻摘要",
										name : "nSummary",
										allowBlank : false,
										width : 330
									});
						/*	var oFCKeditor = new FCKeditor('nContent'); 		
 								 oFCKeditor.BasePath = "/fckeditor"; // Base
  								oFCKeditor.Create(); 
  								*/
							// 新闻所在的栏目
							var proxy = new Ext.data.HttpProxy({
										url : "dept.do?method=queryDepts"	//获取新闻对应栏目的action
									});
							var reader = new Ext.data.JsonReader({}, [{
												name : "rec_cId",
												type : "int",
												mapping : "cId"
											},
											{
												name : "rec_cTitle",
												type : "string",
												mapping : "cTitle"
											}]);
							var store2 = new Ext.data.Store({
								proxy : proxy,
								reader : reader,
								autoLoad : true,                //自动加载数据
								listeners : {
									load : function() {
										category.setValue(record.get("rec_cId"));//为复选框选定原来的值
									}
								}
							});
							var category = new Ext.form.ComboBox({
										store : store2,
										fieldLabel : "所在栏目",
										displayField : "rec_cTitle",		//显示值是栏目Title
										valueField : "rec_cId",				//实际值为栏目标识符
										mode : "remote",
										triggerAction : "all",
										allowBlank : false,
										emptyText : "请选着新闻所在栏目",
										allowBlank : false,
										editable : false,
										name : "cId",
										hiddenName : "cId" // 请注意，设置该选项才能将实际值传送到服务器  employeeVo.did
									});
							var form = new Ext.form.FormPanel({
										frame : true,
										items : [hiddennId, nTitle, nSummary],
										url : "employee.do",
										baseParams : {
											method : "edit"
										},
										method : "post",
										buttons : [{
											text : "修改",
											handler : function() {
												var json = {
													success : function(f,
															action) {
														Ext.Msg
																.alert(
																		"成功",
																		action.result.msg);
														store.reload();
														win.close();
													},

													failure : function() {
														Ext.Msg
																.alert("失败",
																		"对不起，操作失败，请检查数据是否完整！");
													}
												};
												form.getForm().submit(json);
											}
										}, {
											text : "关闭",
											handler : function() {
												win.close();
											}
										}]
									});
							var win = new Ext.Window({
										title : "修改新闻",
										id : "edit",
										width : 500,
										modal : true,
										autoHeight : true,
										items : [form]
									});
							win.show("newslist");
							// 要等窗口出现之后才能初始化
							form.getForm().setValues({
								"nId" : record.get("rec_nId")//,
								//"employeeVo.ename" : record.get("rec_ename"),
								//"employeeVo.eaddress" : record
								//		.get("rec_eaddress")
							});
						}
						// /////////////////////////////////////////
					}
				},
				{
					icon : "images/cross.png",
					cls : "x-btn-text-icon",
					text : "批量删除",
					handler : function() {
						var selModel = grid.getSelectionModel();
						if (selModel.hasSelection()) {
							Ext.Msg.confirm("确认", "您确定要删除选择的记录吗?",
									function(btn) {
										if (btn == "yes") {

											// 选择了行
											var records = selModel.getSelections();
											var ids = [];
											for (var i = 0; i < records.length; i++) {
												ids.push(records[i].get("rec_Nid"));
											}
											Ext.Ajax.request({
												url : "employee.do?method=deleteByIds",
												params : {
													ids : ids
												},
												method : "post",
												success : function(response) {
													var json = Ext.util.JSON
															.decode(response.responseText);
													Ext.MessageBox.alert("结果",
															json.msg);
												},
												failure : function() {
													Ext.Msg.alert("结果",
															"对不起,删除失败!!!!!");
												}
											});
											store.reload();// 更新页面
										}
									});
						} else {
							Ext.Msg.alert("错误", "请选择要删除的行!");
						}
					}
				}, {
					//icon : "images/arrow_refresh.png",
					cls : "x-btn-text-icon",
					text : "查看全部",
					handler : function() {
						store.proxy = proxy;
						// store.load({params: {start:0, limit: 5}});
						store.reload();
					}
				}, new Ext.Toolbar.Fill(), new Ext.Toolbar.TextItem("搜索:"),
				new Ext.form.TriggerField({
							id : "keyword",
							triggerClass : "x-form-search-trigger", // 在文本框后添加搜索按钮
							emptyText : "请输入新闻标题关键字",
							onTriggerClick : function() {
								// alert("dd");

								var v = Ext.get("keyword").getValue();
								var searchProxy = new Ext.data.HttpProxy({
											url : "employee.do?method=queryByEname"
										});
								store.proxy = searchProxy;//此grid中的store
								store.load({
											params : {
												start : 0,
												limit : 5,
												ename : v
											}
										});
								// store.reload();
							}
						})]
	});
		this.main.add(grid);
		this.main.doLayout();

	/*
	 * this.ds.load({ params : { start : 0, limit : 15 } });
	 */
}
});